server.exe [127.0.0.1:80]
node server.js [127.0.0.1] [80]
server.exe and server.js require index.htm

type @name in search for user type - finds user by name and loads its content
type ~title in search for music type - finds music by title and loads its content
type #tag in search for hashtag type - finds hashtag by tag and loads its content

input + enter | input + escape - defocuses input
link + escape | link + backspace - defocuses link
checkbox + escape | checkbox + backspace - defocuses checkbox
1 - focuses search
2 - focuses type
w | i | insert - scrolls to previous
s | k | delete - scrolls to next
scroll change | escape | backspace - unmarks current
image + click | r | p | pause - plays current
arrow down + click | t | [ - downloads current
search + enter | enter - loads
load + ctrl + click | search + ctrl + enter | ctrl + enter - loads all or stops loading all
load + alt + click | search + alt + enter | alt + enter - clears all
load + shift + click | search + shift + enter | shift + enter - reloads
autoload + ctrl + click - resets autoload
download + click - downloads all selected
reset + click - resets device id
view + click - switches view
theme + click - switches theme
hover image + shift - preview dynamic
selector + ctrl + click - selects all
selector + alt + click - unselects all
hover top - shows navigation
rate + ctrl + click - resets rate
escape | backspace | click on the background - hides player
r | p | pause - pauses/plays
page up | w | i | wheel up - plays previous
page down | s | k | wheel down - plays next
a | j - decreases rate
d | l - increases rate
z | , | flip + ctrl - unflips
x | . - horizontally flips
insert | q | u | left half + middle click - rotates counterclockwise
delete | e | o | right half + middle click - rotates clockwise
` | = - switches selection
1 | - - downloads video

loadPosts and setFilter - uses state.posts
loadVideos - uses state.videos
loadPosts() and loadVideos() - loads all
loadPosts(100) - loads at least 100 posts
loadPosts("6501323606574616853") - loads until post with id equal to 6501323606574616853
loadPosts(function() {
	return this.type === "video" && this.likes >= 1000;
}) - loads until video post with 1000 or more likes
setFilter(null) - removes filter
setFilter(function() {
	return this.type === "video" && this.likes >= 1000;
}) - adds filter for video posts with 1000 or more likes
loadVideos(100) - loads at least 100 videos
loadVideos("6501323606574616853") - loads until video with id equal to 6501323606574616853
loadVideos("6501323606574616853", true) - loads until video with id equal or less than 6501323606574616853
loadVideos(function() {
	return this.text.search(/#duet\b/) > -1;
}) - loads until video with #duet hashtag
rankUsers() - ranks users
rankMusics() - ranks musics
rankHashtags() - ranks hashtags